<?php

namespace app\api\model;

use app\api\service\Api;
use think\Db;
use think\Request;

class AuthModel extends Api
{
    protected static $instance;

    public function __construct(Request $request = null)
    {
        parent::__construct($request);
    }

    public static function getInstance()
    {
        if (is_null(self::$instance))
        {
            self::$instance = new static();
        }
        return self::$instance;
    }

    /**
     * 添加岗位
     */
    public function insert($data)
    {
        Db::name('auth_group')->insert($data);
        return Db::name('auth_group')->getLastInsID();
    }

    /**
     * 编辑岗位
     */
    public function update($aid, $data)
    {
        Db::name('auth_group')->where([
            'id' => ['eq', $aid]
        ])->update($data);
        return $aid;
    }

    /**
     * 获取指定元素信息
     */
    public function find($where, $field = '*')
    {
        return Db::name('auth_group')->where($where)->field($field)->find();
    }

    /**
     * 获取岗位列表
     */
    public function getAuthList($where, $field = '*')
    {
        return Db::name('auth_group')->where($where)->field($field)->select();
    }

    /**
     * 获取指定用户岗位组
     */
    public function getAdminGroup($aid)
    {
        $res = Db::name('auth_group_access')->where([
            'uid' => ['eq', $aid]
        ])->column('group_id');
        return implode(',', $res);
    }

    /**
     * 删除指定岗位组信息
     */
    public function delete($where)
    {
        return Db::name('auth_group_access')->where($where)->delete();
    }

    /**
     * 批量添加岗位信息
     */
    public function saveAll($saveData)
    {
        return Db::name('auth_group_access')->insertAll($saveData);
    }

    /**
     * 获取下标ID指定数据
     */
    public function column($where, $field = '*')
    {
        return Db::name('auth_group')->alias('ag')
            ->join('rl_auth_group_access aga', 'ag.id = aga.group_id', 'left')
            ->where($where)
            ->column($field, 'ag.id');
    }

    /**
     * 获取指定管理员岗位组
     */
    public function groupColumn($where, $field = '*')
    {
        return Db::name('auth_group_access')->where($where)->field($field)->select();
    }

    /**
     * 指定岗位授权
     */
//    public function

}